package com.zb.internetSpider.gui.frame;

import java.awt.Component;
import java.util.List;

import javax.annotation.Resource;
import javax.swing.JFrame;

import com.zb.internetSpider.gui.SpiderComponent;
import com.zb.internetSpider.gui.SpiderContainer;
import com.zb.internetSpider.gui.Theme;
import com.zb.internetSpider.gui.asiderPanel.AbstractSpiderAsiderPanel;
import com.zb.internetSpider.gui.footerBar.AbstractSpiderFooterBar;
import com.zb.internetSpider.gui.mainPanel.AbstractSpiderMainPanel;
import com.zb.internetSpider.gui.menuBar.AbstractSpiderMenuBar;
import com.zb.internetSpider.gui.splitPanel.AbstractSpiderSplitPane;
import com.zb.internetSpider.gui.tabsPanel.AbstractSpiderTabsPanel;
import com.zb.internetSpider.gui.tree.AbstractSpiderTree;
import com.zb.internetSpider.service.api.MenuService;

public abstract class AbstractSpiderFrame extends JFrame implements SpiderContainer {
	
	/**
	 * @Fields serialVersionUID : TODO
	 */
	private static final long serialVersionUID = 8788981361391902812L;
	
	protected List<SpiderContainer> containers;
	
	protected List<SpiderComponent> components;
	

	/**
	 * 菜单栏
	 */
	@Resource
	protected AbstractSpiderMenuBar spiderMenuBar;
	
	/**
	 * 分割面板
	 */
	@Resource
	protected AbstractSpiderSplitPane spiderSplitPane;
	
	/**
	 * 页脚
	 */
	@Resource
	protected AbstractSpiderFooterBar spiderFooterBar;
	
	/**
	 * 左侧面板
	 */
	@Resource
	protected  AbstractSpiderAsiderPanel spiderAsiderPanel;
	
	/**
	 * 右侧面板
	 */
	@Resource
	protected  AbstractSpiderMainPanel spiderMainPanel;
	
	/**
	 * 菜单树
	 */
	@Resource
	protected  AbstractSpiderTree spiderTree;
	
	/**
	 * 选项卡面板
	 */
	@Resource
	protected AbstractSpiderTabsPanel spiderTabsPanel;
	
	@Resource
	protected MenuService menuService;
	
	
	/**
	 * 应用的风格
	 */
	protected Theme theme = null;
	


	/**
	 * 
	 * @Description: TODO 设置面板风格
	 * @param @param theme   
	 * @return void  
	 * @throws
	 * @author zb
	 * @date 2019年2月14日 下午4:38:42
	 */
	public abstract void setTheme(Theme theme);
	
	
	/**
	 * 
	 * @Description: TODO 添加子容器组件
	 * @param @param containers   
	 * @return void  
	 * @throws
	 * @author zb
	 * @date 2019年2月17日 上午12:35:07
	 */
	public abstract void addSpiderContainer(SpiderContainer... containers);
	
	
	/**
	 * 
	 * @Description: TODO  初始化应用内各个组件的数据
	 * @param    
	 * @return void  
	 * @throws
	 * @author zb
	 * @date 2019年2月15日 下午11:46:23
	 */
	public void init() {
		// TODO Auto-generated method stub
		/**
		 * 设置页脚数据
		 */
		for(SpiderContainer container : this.containers) {
			container.init();
		}
		
	}
	
	/**
	 * 
	 * @Description: TODO 显示应用程序
	 * @param    
	 * @return void  
	 * @throws
	 * @author zb
	 * @date 2019年2月17日 上午12:54:19
	 */
	public abstract void create();
	
}
